Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Кафедра АПЕПС Алгоритмізація та програмування - 2. Процедурне програмування ЗВІТ до лабораторної роботи № 2 «Динамічне виділення пам’яті для одно- та двовимірних масивів» Варіант № 15 Дата «26» травня 2022 ЗАВДАННЯ: 1. Ознайомитись з особливостями роботи з динамічними одно- та двовимірними масивами. 2. Розробити Блок-схему програмного алгоритму. 3. Виконати індивідуальне завдання. 4. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій. 5. Вихідні дані (завдання) обрати згідно свого варіанта у Додатку B-2. РЕЗУЛЬТАТ РОБОТИ: 1. Роздрукувати отримані результати (вивести на екран). 2. ЗВІТ до комп’ютерного практикуму для перевірки додати в Клас. 3. Програмний код розмістити на сайті Repl.it (посилання виключно через кнопку «+ Invite»). Теоретичні відомості: Об’єкти з динамічної тривалістю життя створюються і руйнуються конкретними викликами функцій при виконанні програми. Їм розподіляється пам’ять зі спеціального резерву пам’яті, що називається купою (heap), за допомогою бібліотечної функцій malloc. Відповідно скасування розподілу пам’яті виконується за допомогою функції free. Функція malloc використовується для виділення пам’яті. Вона повертає покажчик на блок виділеної пам’яті. Якщо для блоку недостатньо пам’яті, вона повертає NULL. Щоб виділити пам’ять для одновимірного масиву скористаємося таким синтаксисом: int *parr; parr=(int**)malloc(size*sizeof(int*)); де size – це потрібний розмір масиву. Якщо потрібно виділити для двовимірного масиву скористаємось вказівником на вказівник, тобто синтаксис створення динамічного двовимірного масиву буде виглядати приблизно так: int **pmat; parr=(int**)malloc(rows*sizeof(int*)); for(int i = 0; i<rows;i++) { pmat[i] = (int*)malloc(cols*sizeof(int)); } Щоб змінити розмір виділеної раніше пам’яті використовується функія realloc. Функція free звільняє пам’ять виділену під блок. Хід роботи: Завдання / Короткий опис виконання Завдання 1: Створюю одновимірний динаміничний масив. Заповнюю його. Прохожусь по ньому, якщо знаходжу позитивний елемент, то переношу його у кінець, усі негативні елементи масиву переношу у їхньому порядку у лівий бік. В кінці усіх перетворень змінюю виділену пам’ять, та виводжу результат. В кінці виконання звільняю зайняту пам’ять. Блок-схема до завдання 1: / Короткий опис рішення завдання 2: Створюю двовимірний динамічний масив. Заповнюю його. Проходжусь по ньому починаючи з рядка з індексом 0 та стовпця із індексом 1(тому що перший стовпець непарний). Переношу всі непарні стовпці вліво, а всі парні вправо. Після того змінюю виділену пам’ять для двовимірного масиву, так виводжу результат. Блок-схема до завдання 2 / Результат виконання програми: / Висновок: Під час виконання даної лабораторної роботи набуто практичних навичок із особливість роботи з динамічними одно- та двовимірними масивами. Було обрано варіант та завдання відносно нього. Усі завдання виконано правильно, згідно вимог. Алгоритми працють справно. Силка на Replit: https://replit.com/join/ifffzyepxa-tr-15fundamient Копія коду: // Лабораторна робота №2 // Виконує Фундамент Даніїл ТР-15 // 05.05.2022 #include <stdio.h> #include <stdlib.h> #include <malloc.h> int main() { printf("---- Завдання 1 ----\n"); int *parr = NULL; int arrSize; printf("Введіть к-сть елементів одновимірного масиву: \n"); scanf("%d", &arrSize); parr = (int*)malloc(arrSize * sizeof(int)); //input for(int i = 0; i < arrSize; i++) { scanf("%d", &parr[i]); } //output printf("Початковий масив: \n"); for (int i = 0; i < arrSize; i++) { printf("%d ", parr[i]); } printf("\n\n"); //delete all positive elements for(int i = 0; i < arrSize; i++) { while (parr[i] > 0) { for(int j = i; j < arrSize; j++) parr[j] = parr[j+1]; parr = (int*)realloc(par...
Антиботан аватар за замовчуванням

03.05.2023 19:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини